package handler

import (
	"fmt"
	"multi-cloud-manage/internal/model"
	"multi-cloud-manage/internal/storage"
	"multi-cloud-manage/pkg/cloud/huawei"
	"time"

	"github.com/gin-gonic/gin"
)

// 获取云服务器
func GetResource(c *gin.Context) {
	// 从上下文对象中获取
	value, _ := c.Get("provider")
	// 断言
	provider := value.(*huawei.Provider)
	data, _ := provider.ListResources()
	// fmt.Println(data)
	c.JSON(200, gin.H{
		"code":    200,
		"message": "云主机列表",
		"data":    data,
	})
}

// 创建云服务器
func CreateResource(c *gin.Context) {
	// 从上下文对象中获取
	value, _ := c.Get("provider")
	// 断言
	provider := value.(*huawei.Provider)
	// 获取传递的JSON数据
	var ecs model.Ecs
	c.ShouldBindJSON(&ecs)
	fmt.Println(ecs)
	// 按照参数，创建资源
	response, err := provider.CreateResources(&ecs)
	if err != nil {
		c.JSON(200, gin.H{
			"code":    500,
			"message": "云服务器创建失败",
		})
		return
	}
	ecs.CreatedAt = time.Now()
	servers := *(response.ServerIds) // 解引用
	ecs.ServerId = servers[0]
	// 获取当前用户的id，然后断言
	vo, _ := c.Get("userID")
	fmt.Printf("用户id：%v  类型%T", vo, vo)
	useridv := vo.(int)
	ecs.UserId = useridv
	// 插入
	err = storage.CreateEcs(ecs)
	if err != nil {
		c.JSON(200, gin.H{
			"code":    500,
			"message": "数据插入失败",
		})
		return
	}
	c.JSON(200, gin.H{
		"code":    200,
		"message": "云服务器创建成功",
	})
}

// 删除云服务器
func DeleteResources(c *gin.Context) {
	// 获取传递的id
	id := c.Query("id")
	fmt.Println("要删除的id:", id)
	// 删除数据库，同时还要删除华为云

	c.String(200, "删除成功")
}
